home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / escalant / escala21.lha / escalante2.1 / src / editor / Escalante.h < prev    next >
C/C++ Source or Header  |  1993-07-15  |  3KB  |  176 lines

  1. //
  2. //    Copyright (C) 1993  Jeff McWhirter
  3. //
  4.  
  5. #ifndef ESCALANTE_H
  6. #define ESCALANTE_H
  7.  
  8. #include    "EscalanteGlobal.h"
  9.  
  10.  
  11.  
  12. #include    "Application.h"
  13. #include    "Document.h"
  14.  
  15.  
  16.  
  17.  
  18. #include    "VGraphElement.h"
  19. #include    "VRelation.h"
  20.  
  21. #ifdef USE_STRUCTURAL
  22. #include    "SGraphElement.h"
  23. #include    "SRelation.h"
  24. #endif
  25.  
  26. #include    "EscalanteView.h"
  27.  
  28.  
  29. class VGraphElement; 
  30. class ObjList;
  31.  
  32. #define CallViewFunc(func)\
  33.     EscalanteView * viewptr;\
  34.     Iter next(views);\
  35.     while(viewptr = (EscalanteView*)next())\
  36.                 viewptr->func
  37.  
  38.  
  39.  
  40. extern char *cDocTypeBasic;
  41. extern char *cDocTypeSgVgs;
  42. extern char *cDocTypeSgVg;
  43.  
  44.  
  45. inline void gChanged(){gGraphModified = TRUE;}
  46.  
  47. static int    cIdEscalanteView = 10000;
  48. const int    cIdEscalanteViewInc = 5000;
  49.  
  50.  
  51.  
  52. #define EscalanteDocument_BASE Document
  53. class EscalanteDocument : public EscalanteDocument_BASE {
  54. public:
  55. VGraphElement*    vgraph;
  56. ObjList*    views;
  57. MetaDef(EscalanteDocument);
  58. EscalanteDocument(VGraphElement * vg);
  59. ~EscalanteDocument();
  60.  
  61. virtual EscalanteView * MakeEscalanteView(int,
  62.                   Point,
  63.                   VGraphElement *);
  64.  
  65.  
  66. bool    Close();
  67. void    MyClose();
  68.  
  69. void    AddEscalanteView(BaseEscalanteView* view){
  70.     if(!views) views = new ObjList();
  71.     views->Add((Object*)view);
  72. }
  73.  
  74.  
  75. MenuBar    *DoMakeMenuBar();
  76. void    DoSetupMenu(Menu*);
  77. Command    *DoMenuCommand(int);
  78. VObject    *DoMakeContent();
  79. void    Control(int id, int part, void *val);
  80. };
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87. class ObserverDocument : public EscalanteDocument {
  88. public:
  89. EscalanteView * theview;
  90. ObserverDocument(VGraphElement * vg,
  91.          EscalanteView* tv):EscalanteDocument(vg){theview = tv;}
  92.  
  93. VObject    *DoMakeContent();
  94. //MenuBar    *DoMakeMenuBar(){return 0;}
  95. };
  96.  
  97.  
  98.  
  99. #define EscalanteManager_BASE Document
  100. enum EscalanteManFlags{eEscalanteManModified = BIT(eEvtLast+1),
  101.           eEscalanteManLast = eEvtLast+1};             
  102.  
  103. class EscalanteManager : public Document {
  104. public:
  105. SGraphElement*    sgraph;
  106. ObjList*    vgraphs;
  107. MetaDef(EscalanteManager);
  108. EscalanteManager(SGraphElement * sg,
  109.         class ObjList * vg,
  110.         char * docType =cDocTypeSgVgs ):EscalanteManager_BASE(docType){
  111.             sgraph = sg; vgraphs =vg;Modified(FALSE);
  112.  
  113.  }
  114.  
  115.  
  116. VObject*    DoMakeContent();
  117. virtual EscalanteDocument* NewEscalanteDocument(VGraphElement*);
  118. virtual  EscalanteDocument * MakeEscalanteDocument(VGraphElement*);
  119.  
  120.  
  121. bool    DoRead(IStream&, Data *data);  // return TRUE if OK
  122. bool    DoWrite(OStream&, Data *data); // return TRUE if OK
  123.  
  124.  
  125. bool    Modified();
  126. void    Modified(bool b){SetFlag(eEscalanteManModified,b);}
  127. bool    Close();
  128. };
  129.  
  130. extern EscalanteManager* gEscalanteManager;
  131.  
  132.  
  133. #define Escalante_BASE Application
  134. class Escalante: public Application { 
  135. public:
  136. ObjList*    vgs;  
  137. SGraphElement*    sg;
  138.  
  139. MetaDef(Escalante);
  140. Escalante(int argc, char **argv);
  141. ~Escalante();
  142. virtual EscalanteManager*    MakeEscalanteManager(SGraphElement * sg,ObjList * vgs);
  143. virtual void        MakeGraph(SGraphElement *&, ObjList *&){}
  144. Manager*        DoMakeManager(Symbol type);
  145. bool            CanOpen(Data *data);
  146. Command *        DoMenuCommand(int );
  147. };
  148.  
  149.  
  150.  
  151.  
  152. #define PaletteDocument_BASE    Document
  153. class PaletteDocument: public PaletteDocument_BASE{     
  154. public:
  155. EscalanteView*        view;
  156. class CollectionView*    palette;
  157. ObjList*        tools;
  158. VObject*        paletteWrapper;
  159.  
  160. PaletteDocument(EscalanteView*);
  161. void        Control(int id, int p, void *v);
  162. MenuBar*    DoMakeMenuBar(){return 0;}
  163. VObject*    DoMakeContent();
  164.  
  165. void        DoObserve(int id, int part, void *d , Object *op);
  166. void        MakeToolList();
  167. };
  168.  
  169.  
  170. #endif ESCALANTE_H
  171.  
  172.  
  173.  
  174.  
  175.  
  176.